#!/bin/bash
baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd)
# 初始化环境变量
source ${baseDirForScriptSelf}/source.sh
################## 必要条件检查 ##################
support_system_lists='''- Ubuntu18.04(已验证)
- Ubuntu20.04(未验证)
- WSL+Ubuntu18.04(未验证)
- WSL+Ubuntu20.04(已验证)'''
# 判断是不是Ubuntu
os_type=`lsb_release  -i|awk '{print $NF}'|tr '[A-Z]' '[a-z]'`
if [ "X${os_type}" != "Xubuntu" -a "X${os_type}" != "Xdebian" ];then
    echo """脚本仅支持:
${support_system_lists}

您当前系统类型: ${os_type}"""
    exit 1
fi
# 判断是不是WSL
if [ -f /proc/version ];then
    is_wsl_tmp=`cat /proc/version|grep -i Microsoft`
    if [ "X${is_wsl_tmp}" == "X" ];then
        # 不是wsl
        is_wsl=false
    else
        is_wsl=true
        if [ -f /etc/wsl.conf ];then
            # 如果存在就认为设置过了,不检查内容
            echo "WSL 文件系统已设置"
        else
            sudo touch /etc/wsl.conf
            sudo chmod 755 /etc/wsl.conf
            echo '''[automount]
enabled = true
root = /mnt/
options = "metadata,umask=22,fmask=111"
mountFsTab = true'''>/etc/wsl.conf
            # 提醒重新登录终端
            echo '您当前系统为WSL Ubuntu,为防止文件系统出现权限问题,已经自动配置,请您重启终端生效'
            echo '请您重启终端生效'
            echo '请您重启终端生效'
            echo '请您重启终端生效'
            echo '自动配置 配置文件:/etc/wsl.conf'
            echo '如您需要回退配置,请重命名/删除 /etc/wsl.conf ,并重启终端生效'
            exit
        fi
    fi
fi

# 判断OS版本号
os_version=`lsb_release -r|awk '{print $NF}'`
if [ "${os_type}${os_version}" != "ubuntu18.04" -a "${os_type}${os_version}" != "ubuntu20.04" -a "${os_type}${os_version}" != "debian9.0" ];then
    echo """脚本仅支持:
${support_system_lists}

您当前系统: ${os_version}"""
    check_line=$((LINENO+2))
    echo "如您接受未知风险,强制使用此脚本,可以注释 $0 脚本的第 ${check_line} 行"
    exit 1
fi
# 如果是debian系统,提示用户使用root安装sudo,并且给当前账号sudo权限,建议debian用户直接使用root账号执行
if [ "X${os_type}" == "Xdebian" ];then
    exist_sudo=`which sudo`
    if [ "X${exist_sudo}" == "X" ];then
	echo "===============Warning================="
	echo "您当前系统为: ${os_type} ${os_version},默认没有安装sudo命令"
	echo "您当前执行账号为: ${os_user_name}"
	echo "准备尝试安装sudo,安装过程可能需要您输入root口令"
	echo "如您不清楚root口令,请咨询这台机器的管理员"
	echo "======================================="
	echo ' '
	echo '''确认以上信息后,请按回车(Enter)后继续...'''
	echo '''After confirming the above information, press Enter to continue...'''
	read
	su root -c 'apt-get install sudo'
	if [ $? -gt 0 ];then echo 'sudo安装失败,脚本退出';exit 1;fi
    fi
fi

# git用户信息检查
git_config_num=`git config -l|grep -E 'user.name|user.email'|wc -l`
if [ ${git_config_num} -lt 2 ];then
    echo """Git用户信息未配置,请使用以下命令配置:
git config --global user.name \"git用户名\"
git config --global user.email \"git用户邮箱\"
配置后请重新执行 $0 脚本
"""
    exit
fi
# 判断是否特定网络环境
unset http_proxy
unset https_proxy
is_huawei_tmp=`curl -I -m 10 -o /dev/null -s -w %{http_code} w3.huawei.com`
if [ "${is_huawei_tmp}" == "200" ];then
    is_huawei=true
else
    is_huawei=false
fi
if [ "${is_huawei}" == "true" ];then
    echo "内网用户,跳过ssh检查"
else
    # 检查用户机器与gitee.com是否已做ssh公钥配置
    echo "准备检查与gitee.com的ssh联通性,如提示'.......continue connecting(yes/no)?',请您输入 yes"
    echo ' '
    ssh -T git@gitee.com
    ssh_status=`ssh -T git@gitee.com 2>&1`
    ssh_check_result=`echo "${ssh_status}"|grep successfully`
    if [ "X${ssh_check_result}" == "X" ];then
        echo "SSH公钥检查失败,请检查后重试|SSH check failed, Please check!"
        echo "如何生成公钥请参照:https://gitee.com/help/articles/4181"
        echo "如何注册公钥请参照:https://gitee.com/help/articles/4191"
        exit 1
    fi
fi
# 检查git是否需要重新安装
bash ${baseDirForScriptSelf}/install_git_with_openssl.sh
################## 必要条件检查完成 ##################
